package com.zgx.plus.system.controller.system;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.zgx.plus.common.aop.Log;
import com.zgx.plus.common.base.BaseController;
import com.zgx.plus.common.enums.BusinessType;
import com.zgx.plus.common.response.R;
import com.zgx.plus.common.utils.SecurityUtils;
import com.zgx.plus.security.model.LoginUser;
import com.zgx.plus.security.service.TokenService;
import com.zgx.plus.system.api.pos.SysUser;
import com.zgx.plus.system.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.util.HashMap;
import java.util.Map;

/**
 * 个人信息 业务处理
 *
 * @author ruoyi
 */
@RestController
@RequestMapping("/system/user/profile")
public class SysProfileController extends BaseController {
//    @Autowired
//    private SysUserService userService;
//
//    @Autowired
//    private TokenService tokenService;
//
//    /**
//     * 个人信息
//     * @return
//     */
//    @GetMapping
//    public R<Map<String, Object>> profile() {
//        LoginUser loginUser = Convert.convert(LoginUser.class,getLoginUser());
//        SysUser user = loginUser.getUser();
//        Map<String,Object> ajax = new HashMap<>();
//        ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername()));
//        ajax.put("postGroup", userService.selectUserPostGroup(loginUser.getUsername()));
//        return R.ok(ajax);
//    }
//
//    /**
//     * 修改用户
//     * @return
//     */
//    @Log(title = "个人信息", businessType = BusinessType.UPDATE)
//    @PutMapping
//    public R<Object> updateProfile(@RequestBody SysUser user) {
//        LoginUser loginUser = Convert.convert(LoginUser.class,getLoginUser());
//        SysUser sysUser = loginUser.getUser();
//        user.setUserName(sysUser.getUserName());
//        if (StrUtil.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
//            return  R.fail("修改用户'" + user.getUserName() + "'失败，手机号码已存在");
//        }
//        if (StrUtil.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
//            return  R.fail("修改用户'" + user.getUserName() + "'失败，邮箱账号已存在");
//        }
//        user.setUserId(sysUser.getUserId());
//        user.setPassword(null);
//        user.setAvatar(null);
//        user.setDeptId(null);
//        if (userService.updateUserProfile(user)) {
//            // 更新缓存用户信息
//            sysUser.setNickName(user.getNickName());
//            sysUser.setPhonenumber(user.getPhonenumber());
//            sysUser.setEmail(user.getEmail());
//            sysUser.setSex(user.getSex());
//            tokenService.setLoginUser(loginUser);
//            return R.ok();
//        }
//        return R.fail("修改个人信息异常，请联系管理员");
//    }
//
//    /**
//     * 重置密码
//     * @return
//     */
//    @Log(title = "个人信息", businessType = BusinessType.UPDATE)
//    @PutMapping("/updatePwd")
//    public R<Object> updatePwd(String oldPassword, String newPassword) {
//        LoginUser loginUser = Convert.convert(LoginUser.class,getLoginUser());
//        String userName = loginUser.getUsername();
//        String password = loginUser.getPassword();
//        if (!SecurityUtils.matchesPassword(oldPassword, password)) {
//            return  R.fail("修改密码失败，旧密码错误");
//        }
//        if (SecurityUtils.matchesPassword(newPassword, password)) {
//            return  R.fail("新密码不能与旧密码相同");
//        }
//        if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0) {
//            // 更新缓存用户密码
//            loginUser.getUser().setPassword(SecurityUtils.encryptPassword(newPassword));
//            tokenService.setLoginUser(loginUser);
//            return R.ok();
//        }
//        return R.fail("修改密码异常，请联系管理员");
//    }
//
//    /**
//     * 头像上传
//     * @return
//     */
//    @Log(title = "用户头像", businessType = BusinessType.UPDATE)
//    @PostMapping("/avatar")
//    public R<Object> avatar(@RequestParam("avatarfile") MultipartFile file) throws Exception {
//        if (!file.isEmpty()) {
////            LoginUser loginUser = Convert.convert(LoginUser.class,getLoginUser());
////            String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);
////            if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) {
////                AjaxResult ajax = AjaxResult.success();
////                ajax.put("imgUrl", avatar);
////                // 更新缓存用户头像
////                loginUser.getUser().setAvatar(avatar);
////                tokenService.setLoginUser(loginUser);
////                return ajax;
////            }
//        }
//        return R.fail("上传图片异常，请联系管理员");
//    }
}
